# frozen_string_literal: true

require "spec_helper"
require "split/metric"

describe Split::Metric do
  describe "possible experiments" do
    it "should load the experiment if there is one, but no metric" do
      experiment = Split::ExperimentCatalog.find_or_create("color", "red", "blue")
      expect(Split::Metric.possible_experiments("color")).to eq([experiment])
    end

    it "should load the experiments in a metric" do
      experiment1 = Split::ExperimentCatalog.find_or_create("color", "red", "blue")
      experiment2 = Split::ExperimentCatalog.find_or_create("size", "big", "small")

      metric = Split::Metric.new(name: "purchase", experiments: [experiment1, experiment2])
      metric.save
      expect(Split::Metric.possible_experiments("purchase")).to include(experiment1, experiment2)
    end

    it "should load both the metric experiments and an experiment with the same name" do
      experiment1 = Split::ExperimentCatalog.find_or_create("purchase", "red", "blue")
      experiment2 = Split::ExperimentCatalog.find_or_create("size", "big", "small")

      metric = Split::Metric.new(name: "purchase", experiments: [experiment2])
      metric.save
      expect(Split::Metric.possible_experiments("purchase")).to include(experiment1, experiment2)
    end
  end
end
